//
//  LTQStatusListViewModel.swift
//  WeiBoProject
//
//  Created by MAC on 16/3/2.
//  Copyright © 2016年 LTQ. All rights reserved.
//

import UIKit
import AFNetworking

/// 微博数据列表模型 － 封装网络方法
class LTQStatusListViewModel: NSObject {
    
//    定义成员变量，来接收数据
    lazy var array:[LTQStatusViewModel] = [LTQStatusViewModel]()
    
//    MARK:--网络请求
    func loadData(since_id:Int,max_id:Int,finish:(count: Int)->()){
        
        let afn = AFHTTPSessionManager()
        // 拼接参数
        /*
        必选	类型及范围	说明
        access_token	true	string	采用OAuth授权方式为必填参数，OAuth授权后获得。
        since_id	false	int64	若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0。
        max_id	false	int64	若指定此参数，则返回ID小于或等于max_id的微博，默认为0。
        count	false	int	单页返回的记录条数，最大不超过100，默认为20。
        */
        
        let params = ["access_token":LTQUserViewModel.shareInstance.access_token ?? "",
            "max_id":max_id,
            "since_id":since_id
        ]
        
        afn.GET("https://api.weibo.com/2/statuses/home_timeline.json", parameters: params, progress: nil, success: { (_, JSON) -> Void in
//            处理请求返回回来的数据   字典转模型
            
           if let json = JSON as? [String:NSObject]{
            
            if let statues = json["statuses"] as? [[String:NSObject]]{
                
                //tempArray 存放临时数据  也就是当前的数据
                var tempArray = [LTQStatusViewModel]()
                
//                 对数组进行便利
                for statue in statues{
                    let statueModel = LTQStatus(dict: statue)
//                    
//                  将Model赋值到ViewModel中
                    let ViewModel = LTQStatusViewModel()
                    ViewModel.statusModel = statueModel
//                    添加到可变数组中
                    tempArray.append(ViewModel)
                }
                
//                进行数据的拼接
                if max_id > 0{
                    self.array = self.array + tempArray
                }else{
                    self.array = tempArray + self.array
                }

                
                finish(count: tempArray.count)
            }
            
            }

            }) { (_, error) -> Void in
                print(error)
        }
        
    }

}
